The present invention relates generally to the field of data transfer technology. More specifically, the present invention relates to an apparatus, method, and system for optimizing data transfer rates between a transmitting agent and a receiving agent.
As computer devices and systems continue to advance and become more complex, effective and efficient techniques for transferring data between various components in computer systems have become more and more critical in system design and implementation. In particular, data transfer between an I/O device (e.g., a hard disk) and a host device (e.g., system memory) has been constantly examined and improved in order to improve the system""s total performance and reliability. Data transfer between two components of a system, for example between an IDE device and a host, is typically accomplished via an interface that facilitates and controls the data transfer between the two components. The data transfer between the IDE device and the host can be performed at different transfer rates corresponding to different transfer modes in accordance with existing data transfer protocols (e.g., ATA, Ultra ATA, etc.). Ideally, to attain the best transfer performance, the data transfer between two system components (e.g., the IDE device and the host) should be performed at the fastest transmission rate that the device is capable of transmitting. In reality, however, it is not always possible to transfer data at the fastest possible transfer rate due to various reasons. One of the reasons is that the receiving agent may not have enough buffering capacity to receive all the data from the sending agent at the specified transfer rate. In this instance, the receiving agent would have to ask the sending agent to pause or temporarily suspend the data transfer until the receiving agent is able to receive more data from the sending agent. Another reason is that the receiving agent may be too busy performing other tasks that it cannot devote full attention and resources to process the data already received from the sending agent. In this instance, the receiving agent again would need to pause the data transfer from the sending agent until it is able to receive more data from the sending agent. In these instances, the various conditions that cause data transfer pauses may last so long or happen so frequently that the total transfer rate (i.e., the transfer rate taken into account all the delays due to transfer pauses) may be slower not only compared to the specified transfer rate (e.g., the fastest rate possible) but also compared to a next slower transfer rate that the sending device can transmit (e.g., the second fastest transfer rate, etc.). Specifically, the number of pauses and the duration of pauses occurred during a data transfer from a sending agent to a receiving agent may cause the total transfer rate to be slower than what could have been achieved in the next slower transfer mode according to existing data transfer protocols. On the other hand, system conditions (e.g., buffering capacity, processing power, resources, etc.) during a data transfer may be so good that the receiving agent would have been able to receive data at a faster transfer rate than the specified rate. In this instance, the total system performance is also penalized because data transfer is not performed at the rate that both the sending and receiving agents are capable of doing during that period of time. Therefore, transferring data at a fixed rate without considering the dynamic nature of the system performance conditions does not optimize the total system performance and usage of resources.
According to one aspect of the present invention, a method is provided in which a transmitting agent transfers data to a receiving agent at a specified transfer rate. Information relating to data transfer pauses requested by the receiving agent is maintained. The data transfer rate is dynamically adjusted based upon the pause information maintained.